# -*- coding: utf-8 -*-

# Create your views here.

from impressao.models import *

import os
import commands

COLUNAS = 50

if Impressora.objects.count() > 0:
    try:
        PRINCIPAL = Impressora.objects.get(nome="Principal")
    except:
        try:
            PRINCIPAL = Impressora.objects.get(nome="Impressora Principal")
        except:
            PRINCIPAL = None
else:
    PRINCIPAL = None

CORTE_PARCIAL = chr(27) + chr(109)
CORTE_TOTAL = chr(27) + chr(119)

CORTE = {
    'PARCIAL': chr(27) + chr(109),
    'TOTAL'  : chr(27) + chr(119)
}

# para remover acentos
import string
from unicodedata import normalize

def remover_acentos(txt, codif='utf-8'):

    '''
    Devolve cópia de uma str substituindo os caracteres 
    acentuados pelos seus equivalentes não acentuados.
    
    ATENÇÃO: carateres gráficos não ASCII e não alfa-numéricos,
    tais como bullets, travessões, aspas assimétricas, etc. 
    são simplesmente removidos!
    
    >>> remover_acentos('[ACENTUAÇÃO] ç: áàãâä! éèêë? íì&#297;îï, óòõôö; úù&#361;ûü.')
    '[ACENTUACAO] c: aaaaa! eeee? iiiii, ooooo; uuuuu.'
    
    '''
    try:
        return normalize('NFKD', txt.decode(codif)).encode('ASCII','ignore')
    except:
        return normalize('NFKD', txt).encode('ASCII','ignore')

# FIM DE FUNÇÕES

def linha(comprimento = COLUNAS):
    return '-' * comprimento

def imprime(conteudo, impressora = PRINCIPAL, cabecalho = '', rodape = '', corteTotal = False):
    conteudo = remover_acentos(conteudo)
    cabecalho = remover_acentos(cabecalho).center(COLUNAS)
    rodape = remover_acentos(rodape).center(COLUNAS)
    
    if not cabecalho.endswith('\n'):
        cabecalho += '\n'
    
    if not conteudo.endswith('\n'):
        conteudo += '\n'
    
    if not rodape.endswith('\n'):
        rodape += '\n'
    
    saida = cabecalho + linha() + '\n' + conteudo + linha() + '\n' + rodape + '\n\n\n\n'
    
    if impressora != None:
        if impressora.corte == 1:
            if corteTotal:
                saida += CORTE['TOTAL']
            else:
                saida += CORTE['PARCIAL']
        
        comando = 'echo "' + saida + '" | lpr -P ' + impressora.referencia
        os.system(comando)



